home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / docs / mags / saku14.lha / Teksti / AMOS.txt < prev    next >
Text File  |  1995-08-28  |  5KB  |  107 lines

  1. 5
  2. 1*
  3.  
  4. {3        Ongelmia ja niiden ratkaisuja aloitteleville AMOS-ohjelmoijille
  5. {3        ---------------------------------------------------------------
  6.  
  7.                                Samuli Holopainen
  8.  
  9.  
  10. Tämä artikkeli on tarkoitettu lähinnä AMOSia aloitteleville, mutta useat asiois-
  11. ta koskevat myös muita BASICin tapaisia kieliä. Kerron ongelmista,  joihin  olen
  12. törmännyt ohjelmoidessani AMOSilla sekä niiden ratkaisuista.
  13.  
  14. - AMOSin ohjelmia ei saa käynnistymään suoraan, ennen kuin ne kääntää AMOS  Com-
  15. pilerilla koneen ymmärtämään muotoon. Compiler pitää hankkia erikseen.
  16.  
  17. - Print-käskyn jälkeen tulevien lainausmerkkien sisälle voi kirjoittaa mitä  ta-
  18. hansa (jostain syystä kaikki eivät ymmärrä tätä).
  19.  
  20. - BOB tai Sprite (Easy AMOSissa on vain BOB, Creatorissa ja ja Pro'ssa molemmat)
  21. saadaan liikkumaan piirtämällä se joka kerta uudestaan mutta eri  paikkaan.  Oh-
  22. jelmanpätkä voisi olla esimerkiksi seuraavanlainen: 
  23.  
  24. Load "DF0:Bobs.abk"  ` Lataa Bobs.abk-tiedoston DF0:sta.
  25. Double Buffer        ` Kaksoispuskuri, jolloin BOBit lakkaavat välkkymästä.
  26. Flash Off            ` Lopettaa värin numero 3 vilkkumisen (mm. kursori).
  27. Get BOB Palette      ` Ottaa BOB-pankin väripaletin.
  28. XCOORD=10            ` X-koordinaatti on 10 pistettä vasemmasta reunasta.
  29. YCOORD=20            ` Y-koordinaatti on 20 pistettä ylälaidasta alas.
  30. IMAGE=2              ` Image eli BOB-kuva numero 1 BOB-pankista.
  31. Do                   ` Silmukan alku.
  32. Bob 1,XCOORD,YCOORD,IMAGE
  33.                      ` BOB 1 on XCOORD:in ja YCOORD:in määrämässä paikassa
  34.                      ` kuvalla, jonka IMAGE määrää. Alussa Bob 1,10,20,2.
  35. XCOORD=XCOORD+1      ` XCOORD on nyt XCOORD + 1, jolloin kuva liikkuu yhden
  36.                      ` pisteen oikealle.
  37. If XCOORD=250 Then XCOORD=10 
  38.                      ` Jos XCOORD on 250 se palaakin arvoon 10.
  39. IMAGE=IMAGE+1        ` IMAGE on IMAGE + 1. Kuvaa vaihtamalla voimme tehdä
  40.                      ` esimerkiksi animaation, jossa BOBin vaihtuvat ja
  41.                      ` liikkuvat kuvat loihtivat ruudulle kävelevän hahmon.
  42.                      ` Tällöin kuvissa hahmon jalat ovat tietenkin hieman
  43.                      ` eri asennoissa.
  44. If IMAGE=4 Then IMAGE=1
  45.                      ` Jottei kaikkia BOB-pankin kuvia käytäisi lävitse ja
  46.                      ` kävely näyttäisi toistuvan, laitetaan kuvan numero 4
  47.                      ` tullessa kuvan numero 4 sijasta kuva numero 1
  48.                      ` uudelleen, jolloin liike toistuu.
  49. Loop                 ` Silmukan loppu. Ohjelma hyppää takaisin Do-riville.
  50.  
  51. Huom! AMOS laskee `-merkin jälkeiset merkit rivillä kommenteiksi, joten  heitto-
  52. merkin jälkeinen osa riviä voi sisältää mitä  vain,  kuten  näissä  esimerkeissä
  53. selventäviä huomautuksia.
  54.  
  55. Mikäli BOBin halutaan pysyvän paikoillaan ilman että kuva vaihtuu ja vie pahasti
  56. tehoja, kannattaa BOB piirtää vain kerran. Tämä tapahtuu laittamalla  ennen  Do-
  57. riviä vaikkapa Bob 2,200,130,4 jolloin BOB 2 tulee kohtaan 200,  130,  eikä  tee
  58. tämän jälkeen mitään (pysyy paikoillaan).
  59.  
  60. - Koska monilla on pahoja vaikeuksia muuttujien  kanssa,  niin  yritän  selittää
  61. asian mahdollisimman perusteellisesti. Muuttujan  nimenä  voidaan  käyttää  ihan
  62. mitä tahansa kirjainyhdistelmää (kunhan se ei vain ole käskyn nimi) esim. A,  B,
  63. C, D, DE, GHF tai vaikka SAKU. Muuttujia  käytetään  pitämään  muistissa  jotain
  64. asiaa, esim. numeroa, joka merkitsee pelissä kellonaikaa.  Koska  aika  muuttuu,
  65. niin jonkin täytyy olla ajasta perillä, jotta esim. pelaaja  voisi  sitä  sitten
  66. katsoa.
  67.  
  68. Tähän tarkoitukseen voimme käyttää vaikka kirjainta K  (kuin  kello).  Pakko  ei
  69. tietenkään ole käyttää kirjainta K, vaan yhtä hyvin  voisimme  käyttää  vaikkapa
  70. A:ta tai juuri KELLO:a. Koska kellon täytyy jo aluksi olla jotakin, niin laitam-
  71. me alussa kellonajaksi vaikkapa 76. Tämä kello ei ole "oikea" kello, vaan  menee
  72. ympäri aina 200:n välein. 
  73.  
  74. K=76                 ` K-muuttujan arvoksi asetetaan 76.
  75.  
  76. Emme halua kellon muuttuvan joka kierros takaisin 76:ksi, joten laitamme  silmu-
  77. kan vasta sen jälkeen. 
  78.  
  79. Do                   ` Aloittaa silmukan.
  80. K=K+1                ` K kasvattaa arvoaan yhdellä.
  81.  
  82. Koska emme halua kellon menevän liian suureksi, niin  päätämme  kellolle  rajan,
  83. jonka ylitettyään se aloittaa alusta. Tässä tapauksessa se olkoon 200. 
  84.  
  85. IF K=200 THEN K=1    ` Jos K on 200, niin sen arvo muutetaan 1:ksi.
  86.  
  87. Nähdäksemme ohjelman toiminnan lisäämme vielä  komennon  tulostamaan  kellonajan
  88. ruudulle. 
  89.  
  90. Print K              ` Tulostaa ruudulle K-muuttujan arvon.
  91. Loop                 ` Silmukan loppu. Ohjelma hyppää takaisin Do-riville.
  92.  
  93. Edellä käytetyn kaltaisia muuttujia voi käyttää vain numeroiden  muistiintallen-
  94. tamiseen, mutta jos lisäämme muuttujanimen perään dollarimerkin ($), niin  muut-
  95. tujaan voidaan tallettaa sanoja. Esim: 
  96.  
  97. SANAA$="Tapa tuo kärpänen!"
  98. SANAB$="Käteni! Ne ovat päässäni!"
  99.  
  100. Print SANAA$         ` Tulostaa SANAA$-muuttujan sisällön.
  101. Print SANAB$         ` Tulostaa SANAB$-muuttujan sisällön.
  102.  
  103. Ohjelman ulosanti olisi seuraavanlainen:
  104.  
  105. Tapa tuo kärpänen!
  106. Käteni! Ne ovat päässäni! 
  107.